package com.medusa.aps.business.modules.demand.mp.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.medusa.aps.business.model.pagination.Page;
import com.medusa.aps.business.modules.demand.model.input.OrderIncrementParam;
import com.medusa.aps.business.modules.demand.model.input.OrderPageQuery;
import com.medusa.aps.business.modules.demand.model.input.OrderParam;
import com.medusa.aps.business.modules.demand.model.input.SchedulePageQuery;
import com.medusa.aps.business.modules.demand.model.output.OrderInfoPageListModel;
import com.medusa.aps.business.modules.demand.model.output.SchedulePageListModel;
import com.medusa.aps.business.modules.demand.mp.entity.OrderInformation;

import java.util.List;
import java.util.Set;

/**
 * 订单信息服务接口
 *
 * @author yuxh
 * @since 2023-08-14 17:37:47
 */
public interface OrderInformationService extends IService<OrderInformation> {
    /**
     * 分页查询 订单信息
     *
     * @param query 分页查询参数
     * @return 分页查询结果数据
     */
    Page<OrderInfoPageListModel> orderPage(OrderPageQuery query);

    /**
     * 批量编辑需求订单信息
     *
     * @param orderParams 批量编辑订单参数列表
     */
    void updateDemandOrders(List<OrderParam> orderParams);

    /**
     * 批量操作订单
     *
     * @param orderParams 新增订单参数列表
     */
    void createOrders(List<OrderParam> orderParams);

    /**
     * 批量删除订单
     *
     * @param ids 订单id列表
     */
    void removeDemandOrders(Set<Long> ids);
    /**
     * 根据排查状态批量查询订单信息
     *
     * @param scheduledStatus 计划状态
     * @param orderNumber     订单号
     * @return 订单信息列表
     */
    List<OrderInformation> selectByScheduled(List<Integer> scheduledStatus, Set<String> orderNumber);

    /**
     * 查询调整排程分页列表
     *
     * @param schedulePageQuery 分页参数
     * @return 调整排程分页数据
     */
    Page<SchedulePageListModel> schedulePage(SchedulePageQuery schedulePageQuery);

    /**
     * 更新订单优先级
     *
     * @param orderIncrement 接收实体
     */
    void updateIncrementDemandOrder(OrderIncrementParam orderIncrement);

    /**
     * 编辑排程订单
     *
     * @param orderParams 订单数据
     */
    void updateScheduleOrders(OrderParam orderParams);

    /**
     * 编辑订单优先级
     *
     * @param orderIncrement 编辑接收参数实体
     */
    void updateIncrementScheduleOrder(OrderIncrementParam orderIncrement);

    /**
     * 调整排程删除订单
     *
     * @param ids 订单id集合
     */
    void removeScheduleOrders(Set<Long> ids);
}

